Network managers (Português)]]
O [https://wiki.gnome.org/Projects/NetworkManager/ NetworkManager] é um programa que provê a detecção e configuração automática de redes para computadores. As funcionalidades do NetworkManager são úteis para redes sem fio e cabeadas. Nas redes sem fio, o NetworkManager terá preferência pelas redes que já conhece, e possui a habilidade para trocar para a rede mais confiável sempre que disponível. Aplicativos preparados para o NetworkManager podem trocar do modo online para o offline. O NetworkManager tem preferência pelas redes cabeadas em detrimento das redes sem fio, e possui suporte a certos tipos de VPN. Foi originalmente desenvolvido pela Red Hat e agora, é hospedado no projeto [[GNOME (Português)|GNOME]].
{{Atenção|Por padrão, as senhas de Wi-Fi são armazenadas em texto simples, veja [[#Senhas de Wi-Fi criptografadas]].}}
== Instalação ==
O NetworkManager pode ser [[instala]]do com o pacote {{Pkg|networkmanager}}, que contém um daemon, uma interface de linha de comando ({{ic|nmcli}}) e uma interface baseada em curses ({{ic|nmtui}}).
=== Habilitar NetworkManager ===
Após a instalação, você deve [[iniciar/habilitar]] {{ic|NetworkManager.service}}. Uma vez iniciado o daemon do NetworkManager, ele se conectará automaticamente a todas as "conexões do sistema" disponíveis que já foram configuradas. Quaisquer "conexões de usuário" ou conexões não configuradas precisarão de ''nmcli'' ou um miniaplicativo para configurar e conectar.
=== Interfaces adicionais ===
* {{Pkg|nm-connection-editor}} para uma interface gráfica de usuário,
* {{Pkg|network-manager-applet}} para um miniaplicativo de bandeja de sistema ({{ic|nm-applet}}).
{{Nota|Você deve garantir que nenhum outro serviço que deseje configurar a rede esteja em execução; na verdade, vários serviços de rede entrarão em conflito. Você pode encontrar uma lista dos serviços em execução no momento com {{ic|1=systemctl --type=service}} e, em seguida, [[parar]]. Veja [[#Configuração]] para ativar o serviço NetworkManager.}}
=== Suporte a banda larga móvel ===
[[Instale]] os pacotes {{Pkg|modemmanager}}, {{Pkg|mobile-broadband-provider-info}} e {{Pkg|usb_modeswitch}} para um suporte a conexão de banda larga móvel. Veja [[USB 3G Modem#NetworkManager]] para detalhes.
=== Suporte a PPPoE / DSL ===
[[Instale]] o pacote {{Pkg|rp-pppoe}} para suporte a conexão PPPoE/DSL. Para realmente adicionar uma conexão PPPoE, use {{ic|1=nm-connection-editor}} e adicione uma nova conexão DSL/PPPoE.
=== Suporte a VPN ===
O NetworkManager desde a versão 1.16 tem suporte nativo ao [[WireGuard]], precisando apenas de seu módulo de kernel {{ic|wireguard}}. Leia o [https://blogs.gnome.org/thaller/2019/03/15/wireguard-in-networkmanager/ WireGuard na publicação de blog do NetworkManager].
O suporte para outros tipos de VPN é baseado em um sistema de plug-in. Eles são fornecidos nos seguintes pacotes:
* {{Pkg|networkmanager-openconnect}} para [[OpenConnect (Português)|OpenConnect]]
* [[networkmanager-openvpn]] para [[OpenVPN]]
* {{Pkg|networkmanager-pptp}} para [[PPTP Client]]
* {{Pkg|networkmanager-strongswan}} para [[strongSwan]]
* {{Pkg|networkmanager-vpnc}}
* {{AUR|networkmanager-fortisslvpn-git}}{{Broken package link (Português)|package not found}}
* {{AUR|networkmanager-iodine-git}}
* {{AUR|networkmanager-libreswan}}
* {{Pkg|networkmanager-l2tp}}
* {{AUR|networkmanager-ssh-git}}
* {{Pkg|network-manager-sstp}}
{{Atenção|1=Há vários [https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues?search=VPN&state=opened bugs] (e [https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues?search=VPN&state=opened bugs antigos]) relacionados a suporte VPN. Verifique as opções de processos daemon definidos via a GUI corretamente e certifique-se em cada lançamento do pacote.}}
{{Nota|Pra ter uma resolução de DNS totalmente funcional ao usar VPN, você deve configurar [[#Cache de DNS e encaminhamento condicional|encaminhamento condicional]].}}
== Uso ==
NetworkManager vem com {{man|1|nmcli}} e {{man|1|nmtui}}.
=== Exemplos de nmcli ===
Lista redes wifi próximas:
$ nmcli device wifi list
Conecta a uma rede wifi:
$ nmcli device wifi connect ''SSID'' password ''senha''
Conecta a uma rede oculta:
$ nmcli device wifi connect ''SSID'' password ''senha'' hidden yes
Conecta a um wifi na interface de rede {{ic|wlan1}}:
$ nmcli device wifi connect ''SSID'' password ''senha'' ifname wlan1 ''nome_perfil''
Desconecta uma interface:
$ nmcli device disconnect ifname eth0
Reconecta uma interface marcada como desconectada:
$ nmcli connection up uuid ''UUID''
Obtém uma lista de UUIDs:
$ nmcli connection show
Vê uma lista de dispositivos de rede e seus estados:
$ nmcli device
Desliga o wifi:
$ nmcli radio wifi off
=== Editar uma conexão ===
Para uma lista compreensiva de configurações, veja {{man|5|nm-settings}}.
Em primeiro lugar você precisa obter lista de conexões:
{{hc|$ nmcli connection|
NAME UUID TYPE DEVICE
Conexão cabeada 2 e7054040-a421-3bef-965d-bb7d60b7cecf ethernet enp5s0
Conexão cabeada 1 997f2782-f0fc-301d-bfba-15421a2735d8 ethernet enp0s25
MEU-WIFI-DE-CASA 92a0f7b3-2eba-49ab-a899-24d83978f308 wifi --
}}
Aqui você pode usar a primeira coluna como ID de conexão usada posteriormente. Neste exemplo, escolhemos {{ic|Conexão cabeada 2}} como um ID de conexão.
Você pode ter três métodos para configurar uma conexão após {{ic|Conexão cabeada 2}} ter sido criada:
; Editor interativo do nmcli
: {{ic|nmcli connection edit ''Conexão cabeada 2''}}.
O uso está bem documentado no editor.
; Interface de linha de comando do nmcli
: {{ic|nmcli connection modify ''Conexão cabeada 2'' ''definição''.''propriedade'' ''valor''}}. Veja {{man|1|nmcli}} para seu uso. Por exemplo, você pode alterar sua métrica de rota IPv4 para 200 usando o comando {{ic|nmcli connection modify 'Conexão cabeada 2' ipv4.route-metric 200}}.
; Arquivo de conexão
: Em {{ic|/etc/NetworkManager/system-connections/}}, modifique o arquivo {{ic|''Conexão cabeada 2''.nmconnection}} correspondente.
Não se esqueça de recarregar o arquivo de configuração com {{ic|nmcli connection reload}}
== Front-ends ==
Para configurar e ter acesso fácil ao NetworkManager, a maioria dos usuários desejará instalar um applet. Esse front-end da GUI geralmente reside na bandeja do sistema (ou na área de notificação) e permite a seleção de rede e a configuração do NetworkManager. Vários ambientes de área de trabalho possuem seu próprio applet. Caso contrário, você pode usar [[#nm-applet]].
=== GNOME ===
O [[GNOME (Português)|GNOME]] tem uma ferramenta embutida, acessível a partir das configurações de Rede.
=== KDE Plasma ===
[[Instale]] o pacote {{Pkg|plasma-nm}}. Em seguida, adicione-o à barra de tarefas do KDE por meio do menu ''Opções de painel > Adicionar widgets > Redes''.
=== nm-applet ===
{{Pkg|network-manager-applet}} é um front-end em GTK 3 que funciona sob ambientes Xorg com uma bandeja de sistema.
Para armazenar conexões secretas, instale e configure [[GNOME/Keyring]].
Esteja ciente de que depois de ativar a opção caixa de seleção {{ic|Disponibilizar para outros usuários}} para uma conexão, o NetworkManager armazena a senha em texto simples, embora o respectivo arquivo seja acessível apenas para root (ou outros usuários via {{ic|nm-applet}}). Veja [[#Senhas de Wi-Fi criptografadas]].
Para executar {{ic|nm-applet}} sem uma bandeja do sistema, você pode usar {{Pkg|trayer}} ou {{Pkg|stalonetray}}. Por exemplo, você pode adicionar um script como este em seu caminho:
{{hc|nmgui|
#!/bin/sh
nm-applet 2>&1 > /dev/null &
stalonetray 2>&1 > /dev/null
killall nm-applet
}}
Quando você fecha a janela ''stalonetray'', ela fecha {{ic|nm-applet}} também, então nenhuma memória extra é usada quando você terminar as configurações de rede.
O applet pode mostrar notificações de eventos, como conexão ou desconexão de uma rede WiFi. Para que essas notificações sejam exibidas, verifique se você tem um servidor de notificação instalado - consulte [[Desktop notifications|Notificações na área de trabalho]]. Se você usar o applet sem um servidor de notificação, poderá ver algumas mensagens em stdout/stderr e o aplicativo poderá ser interrompido. Veja [https://bugzilla.gnome.org/show_bug.cgi?id=788313].
Para executar {{ic|nm-applet}} com tais notificações desabilitadas, inicie o miniaplicativo com o seguinte comando:
$ nm-applet --no-agent
{{Dica|{{ic|nm-applet}} pode ser iniciado automaticamente com um [[XDG Autostart (Português)|arquivo desktop de inicialização automática]], para adicionar a opção --no-agent, modifique a linha Exec, p.ex.,
{{bc|1=Exec=nm-applet --no-agent}}
}}
{{Atenção|No [[i3 (Português)|i3]], se o nm-applet for iniciado com a opção {{ic|--no-agent}}, não será possível conectar-se a uma nova rede WiFi criptografada clicando na lista de itens porque nenhuma janela de diálogo de entrada de senha será exibida. [[journal (Português)|journal]] mostrará {{ic|no secrets: No agents were available for this request}}.}}
==== Appindicator ====
Desde a versão 1.18.0, o suporte do Appindicator está [https://gitlab.archlinux.org/archlinux/packaging/packages/network-manager-applet/-/commit/527448fb2a87d85055f504f463dfe961dccd75c3 disponível] no pacote oficial {{Pkg|network-manager-applet}}. Para usar o nm-applet em um ambiente Appindicator, inicie o miniaplicativo com o seguinte comando:
$ nm-applet --indicator
=== networkmanager-dmenu ===
Como alternativa, existe o {{AUR|networkmanager-dmenu-git}}, que é um pequeno script para gerenciar as conexões do NetworkManager com o [[dmenu]] ou [[rofi]] em vez do {{ic|nm-applet}}. Ele fornece todos os recursos essenciais, como conexão com conexões Wi-Fi ou com fio existentes do NetworkManager, conexão a novas conexões Wi-Fi, solicitações de senha, se necessário, conexão VPN existente, habilitação/desabilitação de rede e inicialização da interface gráfica ''nm-connection-editor'', conexão a redes Bluetooth.
== Configuração ==
O NetworkManager exigirá algumas etapas adicionais para poder funcionar corretamente. Certifique-se de ter configurado {{ic|/etc/hosts}} como descrito na seção [[Configuração de rede#Configurando um hostname]].
O NetworkManager possui um arquivo de configuração global em {{ic|/etc/NetworkManager/NetworkManager.conf}}. Arquivos de configuração adicionais podem ser colocados em {{ic|/etc/NetworkManager/conf.d/}}. Geralmente, nenhuma configuração precisa ser feita para os padrões globais.
Após editar um arquivo de configuração, as alterações podem ser aplicadas executando:
# nmcli general reload
=== Habilitar NetworkManager Wait Online ===
Se você tiver serviços que falham se eles forem iniciados antes que a rede esteja ativa, você pode usar o {{ic|NetworkManager-wait-online.service}} além do {{ic|NetworkManager.service}}. Isso, no entanto, raramente é necessário porque a maioria dos daemons em rede é inicializada corretamente, mesmo que a rede ainda não tenha sido configurada.
Em alguns casos, o serviço ainda falhará ao iniciar com sucesso na inicialização devido à configuração de tempo limite em {{ic|/usr/lib/systemd/system/NetworkManager-wait-online.service}} ser muito curta. Altere o tempo limite padrão de 30 para um valor mais alto.
=== Configurar as permissões de PolicyKit ===
Veja [[Solução de problemas gerais#Permissões de sessão]] para como configurar uma sessão de trabalho.
Com uma sessão de trabalho, você tem várias opções para conceder os privilégios necessários ao NetworkManager:
* ''Opção 1.'' Execute um agente de autenticação [[Polkit]] ao efetuar login, como {{ic|/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1}} (parte do {{Pkg|polkit-gnome}}). Você será solicitado a fornecer sua senha sempre que adicionar ou remover uma conexão de rede.
* ''Opção 2.'' [[Usuários e grupos#Gerenciamento de grupo|Adicione]] a si próprio ao grupo {{ic|wheel}}. Você não precisará inserir sua senha, mas a sua conta de usuário também poderá receber outras permissões, como a capacidade de usar o [[sudo (Português)|sudo]] sem digitar a senha do root.
* ''Opção 3.'' [[Usuários e grupos#Gerenciamento de grupo|Adicione]] a si próprio ao grupo {{ic|network}} e crie o seguinte arquivo:
{{hc|/etc/polkit-1/rules.d/50-org.freedesktop.NetworkManager.rules|
polkit.addRule(function(action, subject) {
if (action.id.indexOf("org.freedesktop.NetworkManager.") == 0 && subject.isInGroup("network")) {
return polkit.Result.YES;
}
});
}}
: Todos os usuários do grupo {{ic|network}} poderão adicionar e remover redes sem uma senha. Isso não funcionará em [[systemd (Português)|systemd]] se você não tiver uma sessão ativa com ''systemd-logind''.
=== Configurações de proxy ===
O NetworkManager não lida diretamente com configurações de proxy, mas se você estiver usando o [[GNOME (Português)|GNOME]] ou [[KDE (Português)|KDE]], você pode usar o [http://marin.jb.free.fr/proxydriver/ proxydriver] que lida com configurações de proxy usando Informações do NetworkManager. O proxydriver é encontrado no pacote {{AUR|proxydriver}}.
Para que o ''proxydriver'' possa alterar as configurações do proxy, você precisaria executar este comando, como parte do processo de inicialização do GNOME (veja [[GNOME (Português)#Inicialização automática]]):
xhost +si:localuser:''nome_de_usuário''
Veja também as [[Proxy settings|configurações de proxy]].
=== Verificando conectividade ===
NetworkManager pode tentar alcançar uma página na Internet ao conectar a uma rede. {{Pkg|networkmanager}} está configurado por padrão em {{ic|/usr/lib/NetworkManager/conf.d/20-connectivity.conf}} para verificar a conectividade com o archlinux.org. Para usar um servidor web diferente ou desabilitar a verificação de conectividade, crie {{ic|/etc/NetworkManager/conf.d/20-connectivity.conf}}, veja {{man|5|NetworkManager.conf|CONNECTIVITY SECTION}}. Segue abaixo um exemplo de uso de servidores do GNOME (não requer o uso de [[GNOME]] em si):
{{hc|/etc/NetworkManager/conf.d/20-connectivity.conf|
[connectivity]
uri=http://nmcheck.gnome.org/check_network_status.txt
}}
{{Nota|Embora as verificações automáticas de conectividade sejam um vazamento de privacidade em potencial, o URL oficial de conectividade padrão do archlinux.org está comprometido em não registrar nenhum acesso. Veja [https://gitlab.archlinux.org/archlinux/infrastructure/-/commit/68fbaca2ef9f31f624f117899848f4288d6b39d1].}}
=== Portais cativos ===
Para aqueles que estão por trás de um [[Wikipedia:Captive portal|portal cativo]] ''(captive portal)'', o gerenciador de desktop pode abrir automaticamente uma janela solicitando credenciais. Se sua área de trabalho não funcionar, você pode usar o pacote {{Pkg|capnet-assist}} (no entanto, atualmente ele possui um script de ''dispatcher'' quebrado do NetworkManager). Como alternativa, você pode criar um script de expedidor do NetworkManager com o seguinte conteúdo:
{{hc|/etc/NetworkManager/dispatcher.d/90-open_captive_portal|
#!/bin/sh -e
# Script to dispatch NetworkManager events
#
# Runs shows a login webpage on walled garden networks.
# See NetworkManager(8) for further documentation of the dispatcher events.
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
if [ -x "/usr/bin/logger" ]; then
logger="/usr/bin/logger -s -t captive-portal"
else
logger=":"
fi
wait_for_process() {
PNAME=$1
while [ -z "$(/usr/bin/pgrep $PNAME)" ]; do
sleep 3;
done
}
#launch the browser, but on boot we need to wait that nm-applet starts
start_browser() {
local user="$1"
local display="$2"
export DISPLAY="$display"
wait_for_process nm-applet
export XAUTHORITY="/home/$user/.Xauthority"
$logger "Running browser as '$user' with display '$display' to login in captive portal"
sudo -u "$user" --preserve-env=DISPLAY,XAUTHORITY -H xdg-open http://capnet.elementary.io 2>&1 > /dev/null
}
# Run the right scripts
case "$2" in
connectivity-change)
$logger -p user.debug "dispatcher script triggered on connectivity change: $CONNECTIVITY_STATE"
if [ "$CONNECTIVITY_STATE" = "PORTAL" ]; then
# Match last column of who's output with ' :[at least one digit] '
who | awk '$NF ~ /\(:[0-9]+\)/ { print $1 " " substr($NF, 2, length($NF)-2) };' | \
while read user display; do
start_browser $user $display || $logger -p user.err "Failed for user: '$user' display: '$display'"
done
fi
;;
*)
# In a down phase
exit 0
;;
esac
}}
Você precisará [[reiniciar]] {{ic|NetworkManager.service}} ou reiniciar para que isso comece a funcionar. Depois disso, o script do expedidor deve abrir uma janela de login assim que detectar que você está atrás de um portal cativo.
Outra solução é o {{AUR|captive-browser-git}}, baseado no Google Chrome.
=== Cliente DHCP ===
Por padrão, o NetworkManager usa seu cliente DHCP interno. O plugin DHCPv4 interno baseado na biblioteca [https://github.com/nettools/n-dhcp4 n-dhcp4 do nettools], enquanto o plugin DHCPv6 interno é feito de código baseado systemd-networkd.
Para usar o cliente DHCP da ISC, [[instale]] {{Pkg|dhclient}}. Para alterar o backend do cliente DHCP, defina a opção {{ic|1=main.dhcp=''nome_cliente_dhcp''}} com um arquivo de configuração em {{ic|/etc/NetworkManager/conf.d/}}. Por exemplo:
{{hc|1=/etc/NetworkManager/conf.d/dhcp-client.conf|2=
[main]
dhcp=dhclient
}}
{{Nota|
* Não ative as units systemd enviadas com os pacotes {{Pkg|dhclient}} e {{Pkg|dhcpcd}}. Eles entrarão em conflito com o NetworkManager; consulte a nota em [[#Instalação]] para mais detalhes.
* O NetworkManger não suporta dhcpcd = 9.0.0. Veja {{Bug|66231}}.
}}
=== Gerenciamento de DNS ===
O gerenciamento de DNS do NetworkManager é descrito na página wiki do projeto GNOME — [https://wiki.gnome.org/Projects/NetworkManager/DNS Projects/NetworkManager/DNS].
==== Cache de DNS e encaminhamento condicional ====
O NetworkManager possui um plugin para habilitar o cache DNS e encaminhamento condicional ([https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/143 anteriormente] chamado "DNS dividido" na documentação do NetworkManager) usando [[dnsmasq (Português)|dnsmasq]] ou [[systemd-resolved]]. As vantagens dessa configuração são que as pesquisas de DNS serão armazenadas em cache, encurtando os tempos de resolução e as pesquisas de DNS dos hosts de VPN serão roteadas para os servidores DNS da VPN relevantes. Isso é especialmente útil se você estiver conectado a mais de uma VPN.
===== dnsmasq =====
Certifique-se que {{Pkg|dnsmasq}} está instalado. Então, defina {{ic|1=main.dns=dnsmasq}} com um arquivo de configuração em {{ic|/etc/NetworkManager/conf.d/}}:
{{hc|/etc/NetworkManager/conf.d/dns.conf|2=
[main]
dns=dnsmasq
}}
Agora, execute {{ic|nmcli general reload}} como root. NetworkManager vai iniciar automaticamente o dnsmasq e adicionar {{ic|127.0.0.1}} ao {{ic|/etc/resolv.conf}}. Os servidores DNS originais podem ser localizados no {{ic|/run/NetworkManager/no-stub-resolv.conf}}. Você pode verificar se dnsmasq está sendo usado fazendo a mesma procura DNS duas vezes com {{ic|drill example.com}} e verificando o servidor e tempos de consulta.
{{Nota|
* Você não precisa iniciar {{ic|dnsmasq.service}} ou editar {{ic|/etc/dnsmasq.conf}}. O NetworkManager iniciará o dnsmasq sem usar o serviço systemd e sem ler o(s) arquivo(s) de configuração padrão do dnsmasq.
* A instância do dnsmasq iniciada pelo NetworkManager será vinculada a {{ic|127.0.0.1:53}}, você pode executar qualquer software (incluindo {{ic|dnsmasq.service}}) no mesmo endereço e porta.
}}
====== Configuração personalizada do dnsmasq ======
Configurações personalizadas podem ser criadas para o ''dnsmasq'' criando arquivos de configuração em {{ic|/etc/NetworkManager/dnsmasq.d/}}. Por exemplo, para alterar o tamanho do cache DNS (armazenado na RAM):
{{hc|/etc/NetworkManager/dnsmasq.d/cache.conf|2=
cache-size=1000
}}
{{Dica|Verifique a sintaxe do arquivo de configuração com {{ic|1=dnsmasq --test --conf-file=/dev/null --conf-dir=/etc/NetworkManager/dnsmasq.d}}.}}
Veja {{man|8|dnsmasq}} para todas as opções disponíveis.
====== IPv6 ======
Habilitar o {{ic|dnsmasq}} no NetworkManager pode interromper as pesquisas de DNS somente do IPv6 (ou seja, {{ic|drill -6 [hostname}}}) que, de outra forma, funcionariam. Para resolver isso, a criação do arquivo a seguir configurará o ''dnsmasq'' para também ouvir o loopback do IPv6:
{{hc|/etc/NetworkManager/dnsmasq.d/ipv6-listen.conf|2=
listen-address=::1
}}
Além disso, o {{ic|dnsmasq}} também não prioriza o DNS IPv6 upstream. Infelizmente, o NetworkManager não faz isso ([https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/936712 Bug do Ubuntu]). Uma solução alternativa seria desabilitar o DNS IPv4 na configuração do NetworkManager, supondo que exista.
====== DNSSEC ======
A instância dnsmasq iniciada pelo NetworkManager por padrão não validará [[DNSSEC (Português)|DNSSEC]] desde que seja iniciada com a opção {{ic|--proxy-dnssec}}. Ele irá confiar em qualquer informação DNSSEC obtida do servidor DNS upstream.
Para que o dnsmasq valide corretamente o DNSSEC, quebrando assim a resolução de DNS com servidores de nomes que não suportam ele, crie o seguinte arquivo de configuração:
{{hc|/etc/NetworkManager/dnsmasq.d/dnssec.conf|2=
conf-file=/usr/share/dnsmasq/trust-anchors.conf
dnssec
}}
===== systemd-resolved =====
O NetworkManager pode usar o [[systemd-resolved]] como um resolvedor e cache de DNS. Certifique-se de que ''systemd-resolved'' esteja configurado corretamente e que {{ic|systemd-resolved.service}} esteja [[iniciado]] antes de usá-lo.
systemd-resolved vai ser usado automaticamente se {{ic|/etc/resolv.conf}} é um [[Systemd-resolved#DNS|link simbólico]] para {{ic|/run/systemd/resolve/stub-resolv.conf}}, {{ic|/run/systemd/resolve/resolv.conf}} ou {{ic|/usr/lib/systemd/resolv.conf}}.
Você pode habilitá-lo explicitamente definindo {{ic|1=main.dns=systemd-resolved}} com um arquivo de configuração em {{ic|/etc/NetworkManager/conf.d/}}:
{{hc|/etc/NetworkManager/conf.d/dns.conf|2=
[main]
dns=systemd-resolved
}}
===== Resolvedor de DNS com um assinante do openresolv =====
Se o [[openresolv (Português)|openresolv]] tem um assinante para seu [[resolvedor de DNS]] local, configure o assinante e [[#Usar openresolv|configure o NetworkManager para usar o openresolv]].
Porque o NetworkManager anuncia uma única "interface" para o ''resolvconf'', não é possível implementar encaminhamento condicional entre duas conexões do NetworkManager. Veja [https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues/153 issue 153 do NetworkManager].
Isso pode ser parcialmente mitigado se você definir {{ic|1=private="*"}} no {{ic|/etc/resolvconf.conf}}[https://roy.marples.name/projects/openresolv/configuration/]. Quaisquer consultas por domínios que não estejam na lista de domínios de pesquisa não serão encaminhados. Elas serão tratadas conforme a configuração do resolvedor local. Por exemplo, encaminhadas para outro servidor DNS ou resolvidas recursivamente a partir da raiz do DNS.
==== Servidores DNS personalizados ====
===== Configurando servidores DNS globais personalizados =====
Para definir servidores DNS para todas as conexões, especifique-as em {{man|5|NetworkManager.conf}} usando a sintaxe {{ic|1=servers=''endereçoservidorip1'',''endereçoservidorip2'',''endereçoservidorip3''}} em uma seção chamada {{ic|[global-dns-domain-*]}}. Por exemplo:
{{hc|/etc/NetworkManager/conf.d/dns-servers.conf|2=
[global-dns-domain-*]
servers=::1,127.0.0.1
}}
{{Nota|
* Se você usa [[#Cache de DNS e encaminhamento condicional|plugin de dnsmasq ou systemd-resolved do NetworkManager]] ou [[#Resolvedor de DNS com um assinante do openresolv|assinantes de openresolv]], então não especifique endereços de loopback com a opção {{ic|1=servers=}}, pois isso pode quebrar a resolução de DNS.
* Os servidores especificados não são enviados para [[systemd-resolved]], os servidores DNS da conexão são usados.
}}
===== Configurando servidores DNS personalizados em uma conexão =====
====== Configurando servidores DNS personalizados em uma conexão (GUI) ======
A configuração vai depender do tipo de front-end usado; o processo geralmente envolve clicar com botão direito no miniaplicativo, editar (ou criar) um perfil e, então, escolher o tipo de DHCP como ''Automático (especifique endereços)''. OS endereços DNS precisarão ser inseridos e são geralmente dessa formato: {{ic|127.0.0.1, ''Servidor-DNS-um'', ...}}.
====== Configurando servidores DNS personalizados em uma conexão (nmcli / arquivo de conexão) ======
Para configurar servidores DNS por conexão, você pode usar o campo {{ic|dns}} (e os {{ic|dns-search}} e {{ic|dns-options}} associados) nas [[#Editar uma conexão|configurações da conexão]].
Se {{ic|method}} estiver definido para {{ic|auto}} (quando você usa DHCP), você precisa definir {{ic|ignore-auto-dns}} para {{ic|yes}}.
==== /etc/resolv.conf ====
Por padrão, {{ic|/etc/resolv.conf}} é gerenciado pelo ''NetworkManager'' a menos que ele seja um link simbólico.
Ele pode ser configurado para escrever por meio do [[#Usar openresolv|openresolv]] ou para [[#/etc/resolv.conf não gerenciado|não tocar]].
O uso do openresolv permite que o NetworkManager coexista com outro software com suporte a ''resolvconf'' ou, por exemplo, para executar um cache DNS local e um resolvedor de DNS dividido para o qual o openresolv tem um [[openresolv (Português)#Assinantes|assinante]].
{{Nota|Encaminhamento condicional [https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues/153 ainda não possui suporte completo] ao usar NetworkManager com openresolv.}}
O ''NetworkManager'' também oferece hooks via os scripts dispatchers que podem ser usados para alterar o {{ic|/etc/resolv.conf}} após as alterações de rede. Veja [[#Serviços de rede com o NetworkManager dispatcher]] e {{man|8|NetworkManager}} para mais informações.
{{Nota|
* Se o NetworkManager estiver configurado para usar [[#dnsmasq|dnsmasq]] ou [[#systemd-resolved|systemd-resolved]], os endereços loopback apropriados serão escritos em {{ic|/etc/resolv.conf}}.
* O arquivo {{ic|resolv.conf}} que o NetworkManager escreve, ou que escreveria em {{ic|/etc/resolv.conf}}, pode ser encontrado em {{ic|/run/NetworkManager/resolv.conf}}.
* Um arquivo {{ic|resolv.conf}} com os servidores de nome obtidos e domínios de pesquisa podem ser encontrados em {{ic|/run/NetworkManager/no-stub-resolv.conf}}.
}}
===== /etc/resolv.conf não gerenciado =====
Para evitar que o NetworkManager toque no {{ic|/etc/resolv.conf}}, defina {{ic|1=main.dns=none}} com um arquivo de configuração em {{ic|/etc/NetworkManager/conf.d/}}:
{{hc|/etc/NetworkManager/conf.d/dns.conf|2=
[main]
dns=none
}}
{{Dica|Você também pode querer definir {{ic|1=main.systemd-resolved=false}}, de forma que o NetworkManager não envie a configuração DNS para [[systemd-resolved]].}}
{{Nota|Veja [[#Cache de DNS e encaminhamento condicional]], para configurar o NetworkManager usando outros backends de DNS, como [[dnsmasq (Português)|dnsmasq]] e [[systemd-resolved]], em vez de usar {{ic|1=main.dns=none}}.}}
Após isso, o {{ic|/etc/resolv.conf}} pode ser um link simbólico quebrado que você precisará remover. Então, basta criar um novo arquivo {{ic|/etc/resolv.conf}}.
===== Usar openresolv =====
{{Nota|Não defina {{ic|1=rc-manager=resolvconf}} quando {{Pkg|systemd-resolvconf}} estiver instalado. ''systemd-resolved'' fornece suporte limitado à interface do ''resolvconf'' e o NetworkManager possui suporte a se comunicar com systemd-resolved por meio de D-Bus sem usar ''resolvconf''.}}
Para configurar o NetworkManager para usar [[openresolv (Português)|openresolv]], defina {{ic|1=main.rc-manager=resolvconf}} com um arquivo de configuração em {{ic|/etc/NetworkManager/conf.d/}}:
{{hc|/etc/NetworkManager/conf.d/rc-manager.conf|2=
[main]
rc-manager=resolvconf
}}
=== Firewall ===
Você pode atribuir uma zona [[firewalld]] com base na sua conexão atual. Por exemplo, um firewall restritivo no trabalho e um menos restritivo no domicílio.
Isso também pode ser feito com o [[#Serviços de rede com o NetworkManager dispatcher|NetworkManager dispatcher]].
=== Configuração de 802.1x / PEAP ===
Uma rede PEAP e 802.1x pode ser adicionada adicionando um arquivo de configuração ao {{ic|/etc/NetworkManager/system-connections/''nome''}}.
Aqui está um exemplo de arquivo de configuração para IPv4 com IPv6 desativado:
{{hc|/etc/NetworkManager/system-connections/''nome''|2=
[ipv6]
method=ignore
[ipv4]
method=auto
[connection]
#id=XXXXXXXXX
#uuid=XXXXXXXXX
type=802-11-wireless
#timestamp=XXXX
[802-11-wireless-security]
key-mgmt=wpa-eap
[802-11-wireless]
ssid=ssid
mode=infrastructure
#seen-bssids=XXXXXXXXX
security=802-11-wireless-security
[802-1x]
eap=peap;
identity=user
password=password
phase2-auth=mschapv2
}}
A cerquilha (#) define comentários.
== Serviços de rede com o NetworkManager dispatcher ==
Existem alguns serviços de rede que você não desejará executar até que o NetworkManager exiba uma interface. O NetworkManager tem a capacidade de iniciar serviços quando você se conecta a uma rede e os interrompe quando você desconecta (por exemplo, ao usar [[NFS]], [[SMB]] e [[NTPd]]).
Para ativar o recurso, você precisa [[habilitar]] e [[inicia]]r o {{ic|NetworkManager-dispatcher.service}}.
Quando o serviço estiver ativo, os scripts poderão ser adicionados ao diretório {{ic|/etc/NetworkManager/dispatcher.d}}.
Os scripts devem pertencer ao '''root''', caso contrário o distribuidor não os executará. Para maior segurança, defina o [[proprietário]] e grupo para root:
# chown root:root /etc/NetworkManager/dispatcher.d/''10-script.sh''
Certifique-se que o arquivo tem as permissões corretas:
# chmod 755 /etc/NetworkManager/dispatcher.d/''10-script.sh''
Os scripts serão executados em ordem alfabética no momento da conexão e em ordem alfabética inversa no momento da desconexão. Para garantir a ordem em que aparecem, é comum usar caracteres numéricos antes do nome do script (por exemplo, {{ic|10-portmap}} ou {{ic|30-netfs}} (o que garante que ''portmapper'' esteja ativo antes que as montagens do NFS sejam tentadas).
Scripts vão receber os seguintes argumentos:
* '''Nome da interface:''' p. ex., {{ic|eth0}}
* '''Status da interface:''' ''up'' ou ''down''
* '''Status da VPN:''' ''vpn-up'' ou ''vpn-down''
{{Atenção|Se você se conectar a redes estrangeiras ou públicas, esteja ciente de quais serviços você está iniciando e quais servidores você espera que estejam disponíveis para eles se conectarem. Você pode criar uma falha de segurança iniciando os serviços errados enquanto estiver conectado a uma rede pública.}}
=== Evitando o esgotamento de tempo limite do dispatcher ===
Se o acima está funcionando, então esta seção não é relevante. No entanto, há um problema geral relacionado à execução de scripts do dispatcher que demoram mais para serem executados. Inicialmente, foi utilizado um tempo limite interno de apenas três segundos. Se o script chamado não foi concluído a tempo, ele foi morto. Mais tarde, o tempo limite foi estendido para cerca de 20 segundos (veja o [https://bugzilla.redhat.com/show_bug.cgi?id=982734 Rastreador de erros] para mais informações). Se o tempo limite ainda criar o problema, uma solução alternativa poderá ser modificar o arquivo de serviço do distribuidor {{ic|/usr/lib/systemd/system/NetworkManager-dispatcher.service}} para permanecer ativo após a saída:
{{hc|/etc/systemd/system/NetworkManager-dispatcher.service.d/remain_after_exit.conf|2=
[Service]
RemainAfterExit=yes
}}
Agora, inicie e habilite o serviço modificado {{ic|NetworkManager-dispatcher}} service.
{{Atenção|Adicionar a linha {{ic|RemainAfterExit}} a ele impedirá que o dispatcher feche. Infelizmente, o dispatcher '''tem''' para fechar antes que possa executar seus scripts novamente. Com ele, o dispatcher não irá expirar, mas também não será fechado, o que significa que os scripts só serão executados uma vez por inicialização. Portanto, não adicione a linha a menos que o tempo limite esteja causando um problema.}}
=== Exemplos de dispatcher ===
==== Montar pasta remota com sshfs ====
Como o script é executado em um ambiente muito restritivo, você precisa exportar {{ic|SSH_AUTH_SOCK}} para se conectar ao seu agente SSH. Existem diferentes maneiras de conseguir isso, veja [https://bbs.archlinux.org/viewtopic.php?pid=1042030#p1042030 esta mensagem] para obter mais informações. O exemplo abaixo funciona com [[GNOME Keyring]], e irá pedir a senha se você ainda não estiver desbloqueado. Caso o NetworkManager conecte-se automaticamente no login, é provável que o ''gnome-keyring'' ainda não tenha iniciado e a exportação irá falhar (daí o sleep). O {{ic|UUID}} para correspondência pode ser encontrado com o comando {{ic|nmcli connection status}} ou {{ic|nmcli connection list}}.
{{bc|
#!/bin/sh
USER='nome_de_usuário'
REMOTE='usuário@host:/caminho/remoto'
LOCAL='/caminho/local'
interface=$1 status=$2
if [ "$CONNECTION_UUID" = "''uuid''" ]; then
case $status in
up)
SSH_AUTH_SOCK=$(find /tmp -maxdepth 1 -type s -user "$USER" -name 'ssh')
export SSH_AUTH_SOCK
su "$USER" -c "sshfs $REMOTE $LOCAL"
;;
down)
fusermount -u "$LOCAL"
;;
esac
fi
}}
==== Montagem de compartilhamentos SMB ====
Alguns compartilhamentos [[SMB]] estão disponíveis apenas em determinadas redes ou locais (por exemplo, em casa). Você pode usar o distribuidor para montar apenas compartilhamentos SMB que estejam presentes em seu local atual.
O script a seguir verificará se nos conectamos a uma rede específica e montamos os compartilhamentos de acordo:
{{hc|/etc/NetworkManager/dispatcher.d/30-mount-smb.sh|
#!/bin/sh
# Localiza o UUID de conexão com "nmcli connection show" no terminal.
# Todos os tipos de conexão do NetworkManager têm suporte: sem fio, VPN, com fio...
if [ "$2" = "up" ]; then
if [ "$CONNECTION_UUID" = "uuid" ]; then
mount /seu/ponto/de/montagem &
# adicione mais compartilhamentos conforme necessário
fi
fi
}}
O script a seguir desmontará todos os compartilhamentos SMB antes de um software ter iniciado a desconexão de uma rede específica:
{{hc|/etc/NetworkManager/dispatcher.d/pre-down.d/30-umount-smb.sh|
#!/bin/sh
if [ "$CONNECTION_UUID" = "uuid" ]; then
umount -a -l -t cifs
fi
}}
{{Nota|Certifique-se de que este script esteja localizado no subdiretório {{ic|pre-down.d}}, conforme mostrado acima, caso contrário, ele desmontará todos os compartilhamentos em qualquer alteração de estado de conexão.}}
O script a seguir tentará desmontar todos os compartilhamentos SMB após uma desconexão inesperada de uma rede específica:
{{hc|/etc/NetworkManager/dispatcher.d/40-umount-smb.sh|
#!/bin/sh
if [ "$CONNECTION_UUID" = "uuid" ]; then
if [ "$2" = "down" ]; then
umount -a -l -t cifs
fi
fi
}}
{{Nota|
* Desde o NetworkManager 0.9.8, os eventos ''pre-down'' e ''down'' não são executados no desligamento ou reinicialização, veja [https://bugzilla.gnome.org/show_bug.cgi?id=701242 este relatório de erro] para mais informações.
* Os scripts de ''umount'' anteriores ainda são propensos a deixar os aplicativos que realmente acessam a montagem para "travar".
}}
Uma alternativa é usar o script como visto em [[NFS#Using a NetworkManager dispatcher]]:
{{hc|/etc/NetworkManager/dispatcher.d/30-smb.sh|
#!/bin/bash
# Descubra O UUID da conexão com "nmcli con show" no terminal.
# Todos os tipos de conexão do NetworkManager têm suporte: wireless, VPN, wired...
WANTED_CON_UUID="CHANGE-ME-NOW-9c7eff15-010a-4b1c-a786-9b4efa218ba9"
if [[ "$CONNECTION_UUID" == "$WANTED_CON_UUID" ]]; then
# Parâmetro do script $1: Nome da conexão do NetworkManager, não usado
# Parâmetro do script $2: eventos despachado
case "$2" in
"up")
mount -a -t cifs
;;
"pre-down");&
"vpn-pre-down")
umount -l -a -t cifs >/dev/null
;;
esac
fi
}}
{{Nota|Este script ignora as montagens com a opção {{ic|noauto}}, remove esta opção de montagem ou usa {{ic|auto}} para permitir que o despachante gerencie essas montagens.}}
Crie um link simbólico dentro de {{ic|/etc/NetworkManager/dispatcher.d/pre-down}} para pegar os eventos {{ic|pre-down}}:
# ln -s ../30-smb.sh /etc/NetworkManager/dispatcher.d/pre-down.d/30-smb.sh
==== Montagem de compartilhamentos NFS ====
Veja [[NFS#Using a NetworkManager dispatcher]].
==== Usar dispatcher para ativar rede sem fio automaticamente dependendo de cabo LAN estar conectado ====
A ideia é ligar o Wi-Fi apenas quando o cabo LAN estiver desconectado (por exemplo, ao desconectá-lo de um laptop) e para que o Wi-Fi seja desativado automaticamente, assim que o cabo LAN for conectado novamente.
Crie o seguinte script de dispatcher[https://superuser.com/questions/233448/disable-wlan-if-wired-cable-network-is-available], substituindo {{ic|1=LAN_interface}} pelo seu.
{{hc|/etc/NetworkManager/dispatcher.d/wlan_auto_toggle.sh|
#!/bin/sh
if [ "$1" = "LAN_interface" ]; then
case "$2" in
up)
nmcli radio wifi off
;;
down)
nmcli radio wifi on
;;
esac
fi
}}
{{Nota|Você obter uma lista de interfaces usando [[#Exemplos de nmcli|nmcli]]. As interfaces ethernet (LAN) iniciam com {{ic|en}}, p.ex., {{ic|1=enp0s5}}}}
==== Usar dispatcher para conectar a uma VPN após uma conexão de rede ser estabelecida ====
Neste exemplo, queremos nos conectar automaticamente a uma conexão VPN definida anteriormente após a conexão a uma rede Wi-Fi específica. A primeira coisa a fazer é criar o script de dispatcher que define o que fazer depois de estarmos conectados à rede.
{{Nota|Esse script vai precisar de {{Pkg|wireless_tools}} para usar {{ic|iwgetid}}.}}
{{hc|/etc/NetworkManager/dispatcher.d/vpn-up|
#!/bin/sh
VPN_NAME="nome da conexão VPN definido no NetworkManager"
ESSID="ESSID da rede Wi-Fi (não o nome da conexão)"
interface=$1 status=$2
case $status in
up|vpn-down)
if iwgetid | grep -qs ":\"$ESSID\""; then
nmcli connection up id "$VPN_NAME"
fi
;;
down)
if iwgetid | grep -qs ":\"$ESSID\""; then
if nmcli connection show --active | grep "$VPN_NAME"; then
nmcli connection down id "$VPN_NAME"
fi
fi
;;
esac
}}
Se você quiser se conectar automaticamente à VPN para todas as redes Wi-Fi, use a seguinte definição do ESSID: {{ic|1=ESSID=$(iwgetid -r)}}. Lembre-se de definir as permissões do script [[#Serviços de rede com o NetworkManager dispatcher|de acordo com isso]].
A tentativa de se conectar com o script acima ainda pode falhar com {{ic|NetworkManager-dispatcher.service}} reclamando sobre "nenhum segredo de VPN válido", por causa de [https://developer.gnome.org/NetworkManager/0.9/secrets-flags.html como os segredos VPN são armazenados]. Felizmente, existem diferentes opções para fornecer ao script acima acesso à sua senha de VPN.
1: Um deles requer a edição do arquivo de configuração de conexão VPN para fazer com que o NetworkManager armazene os segredos por si só, em vez de dentro de um chaveiro [https://bugzilla.redhat.com/show_bug.cgi?id=710552 que será inacessível por root]: abra {{ic|/etc/NetworkManager/system-connections/''nome de sua conexão VPN''}} e altere as {{ic|password-flags}} e {{ic|secret-flags}} de {{ic|1}} para {{ic|0}}.
Se isso não funcionar sozinho, talvez seja necessário criar um {{ic|passwd-file}} em um local seguro com as mesmas permissões e propriedade que o script do dispatcher, contendo o seguinte:
{{hc|/caminho/para/arquivo-passwd|
vpn.secrets.password:SUA_SENHA
}}
O script deve ser alterado de acordo, para que obtenha a senha do arquivo:
{{hc|/etc/NetworkManager/dispatcher.d/vpn-up|
#!/bin/sh
VPN_NAME="nome de conexão VPN definida no NetworkManager"
ESSID="ESSID de rede Wi-Fi (nenhum nome de conexão)"
interface=$1 status=$2
case $status in
up|vpn-down)
if iwgetid | grep -qs ":\"$ESSID\""; then
nmcli connection up id "$VPN_NAME" passwd-file /path/to/passwd-file
fi
;;
down)
if iwgetid | grep -qs ":\"$ESSID\""; then
if nmcli connection show --active | grep "$VPN_NAME"; then
nmcli connection down id "$VPN_NAME"
fi
fi
;;
esac
}}
2: Alternativamente, altere a {{ic|password-flags}} e coloque a senha diretamente no arquivo de configuração adicionando a seção {{ic|vpn-secrets}}:
[vpn]
....
password-flags=0
[vpn-secrets]
password=''senha_senha''
{{Nota|Agora pode ser necessário reabrir o editor de conexão do NetworkManager e salvar as senhas/segredos da VPN novamente.}}
==== Usar dispatcher para desabilitar IPv6 em conexões de provedor de VPN ====
Muitos [[:Category:VPN providers|provedores de VPN comercial]] possuem suporte apenas a IPv4. Isso significa que todo o tráfego IPv6 ignora a VPN e acaba por se tornar virtualmente desnecessário. Para evitar isso, o dispatcher pode ser usado para desabilitar todo o tráfego IPv5 para o período em que a conexão VPN está ativa.
{{hc|/etc/NetworkManager/dispatcher.d/10-vpn-ipv6|
#!/bin/sh
case "$2" in
vpn-up)
echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6
;;
vpn-down)
echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6
;;
esac
}}
==== OpenNTPD ====
Veja [[OpenNTPD#Using NetworkManager dispatcher]].
== Testando ==
Os miniaplicativos do NetworkManager são projetados para serem carregados no início da sessão, portanto, nenhuma configuração adicional deve ser necessária para a maioria dos usuários. Se você já desativou suas configurações de rede anteriores e desconectou-se da sua rede, agora pode testar se o NetworkManager funcionará. O primeiro passo é [[inicia]]r {{ic|NetworkManager.service}}.
Alguns miniaplicativos fornecerão um arquivo {{ic|.desktop}} para que o miniaplicativo NetworkManager possa ser carregado através do menu do aplicativo. Se isso não acontecer, você terá que descobrir o comando para usar ou efetuar logout e efetuar login novamente para iniciar o miniaplicativo. Depois que o applet é iniciado, ele provavelmente começará a pesquisar conexões de rede com a autoconfiguração com um servidor DHCP.
Para iniciar o miniaplicativo do GNOME nos gerenciadores de janela não compatíveis com xdg, como [[awesome]]:
nm-applet --sm-disable &
Para endereços IP estáticos, você terá que configurar o NetworkManager para entendê-los. O processo geralmente envolve clicar com o botão direito do mouse no applet e selecionar algo como 'Editar conexões'.
== Dicas e truques ==
=== Senhas de Wi-Fi criptografadas ===
Por padrão, o NetworkManager armazena senhas em texto não criptografado nos arquivos de conexão em {{ic|/etc/NetworkManager/system-connections/}}. Para imprimir as senhas armazenadas, use o seguinte comando:
# grep -r '^psk=' /etc/NetworkManager/system-connections/
As senhas são acessíveis ao usuário root no sistema de arquivos e aos usuários com acesso às configurações através da GUI (por exemplo, {{ic|nm-applet}}).
É preferível salvar as senhas em formato criptografado em um chaveiro, em vez de texto não criptografado. A desvantagem de usar um chaveiro é que as conexões precisam ser configuradas para cada usuário.
==== Usando GNOME Keyring ====
O daemon do conjunto de chaves deve ser iniciado e o chaveiro precisa ser desbloqueado para que o seguinte funcione.
Além disso, o NetworkManager precisa ser configurado para não armazenar a senha para todos os usuários. Usando o GNOME {{ic|nm-applet}}, execute {{ic|nm-connection-editor}} em um terminal, selecione uma conexão de rede, clique em {{ic|Editar}}, selecione {{ic|Segurança Wi-Fi}} e clique no ícone à direita da senha e marque {{ic|Armazenar a senha somente para este usuário}}.
==== Usando KDE Wallet ====
Usando o {{Pkg|plasma-nm}} do KDE, clique no applet, clique no ícone {{ic|Configurações}} na parte superior direita, clique em uma conexão de rede, na guia {{ic|Configurações gerais}}, desmarque {{ic|Todos os usuários podem se conectar nesta rede}}. Se a opção estiver marcada, as senhas ainda serão armazenadas em texto não criptografado, mesmo que um daemon de chaveiro esteja em execução.
Se a opção foi selecionada anteriormente e você desmarcá-la, você pode ter que usar a opção {{ic|reset}} primeiro para fazer a senha desaparecer do arquivo. Como alternativa, exclua a conexão primeiro e configure-a novamente.
=== Compartilhando conexão internet pelo Wi-Fi ===
Você pode compartilhar sua conexão com a Internet (por exemplo, 3G ou com fio) com apenas alguns cliques. Por favor, note que um [[firewall]] pode interferir no compartilhamento de internet.
Você precisará de uma placa Wi-Fi que tenha suporte ao modo AP. Veja [[Software access point#Wi-Fi device must support AP mode]] para detalhes.
[[Instale]] o pacote {{Pkg|dnsmasq}} para poder realmente compartilhar a conexão.
Crie a conexão compartilhada:
* Clique no miniaplicativo e escolha ''Criar nova rede sem fio''.
* Siga o assistente (escolha WPA2 ou superior, certifique-se de usar pelo menos 8 caracteres, pois tamanhos menores falharão).
** Escolha [[Fedora:Features/RealHotspot|Hotspot]] ou Ad-hoc como modo Wi-Fi.
A conexão será salva e permanecerá armazenada para a próxima vez que você precisar dela.
{{Nota|O Android não possui suporte a conexão a redes ad-hoc. Para compartilhar uma conexão com o Android, use o modo infraestrutura (por exemplo, defina o modo Wi-Fi como "Hotspot").}}
=== Compartilhando conexão internet por Ethernet ===
Cenário: o seu dispositivo está conectado à Internet através de wi-fi e pretende compartilhar a conexão à Internet a outros dispositivos através da rede ethernet.
Requisitos:
* [[Instale]] o pacote {{Pkg|dnsmasq}} para ser capaz de compartilhar a conexão.
* Seu dispositivo conectado à internet e outros dispositivos estarem conectados por um cabo ethernet adequado (isso geralmente significa um cabo ''cross'' ou um switch entre eles).
* Compartilhamento de Internet não estar bloqueado por um [[firewall]].
Etapas:
* Executar {{ic|nm-connection-editor}} do terminal.
* Adicionar uma nova conexão ethernet.
* Dê um nome sensato. Por exemplo, "Internet compartilhada"
* Acesse "Configurações IPv4".
* Para "Método:" selecione "Compartilhado com outros computadores".
* Salve
Agora, você deve ter uma nova opção "Internet compartilhada" sob as conexões cabeadas no NetworkManager.
=== Verificando se a conectividade está ativa dentro de um script ou trabalho cron ===
Alguns trabalhos de ''cron'' exigem conectividade para serem bem-sucedidos. Você pode evitar a execução desses trabalhos quando a rede estiver inoperante. Para isso, adicione um teste '''if''' para redes que consulte a ''nm-tool'' do NetworkManager e verifique o estado da rede. O teste mostrado aqui é bem-sucedido se qualquer interface estiver ativa e falhará se todos estiverem inativos. Isso é conveniente para laptops que podem ser conectados, podem estar sem fio ou podem estar fora da rede.
{{bc|
if [ $(nm-tool|grep State|cut -f2 -d' ') == "connected" ]; then
#Qualquer coisa que você deseje fazer se a rede estiver online
else
#Qualquer coisa que você deseje fazer se a rede estiver offline - note, isso e qualquer outra coisa acima é opcional
fi
}}
Isso é útil para um script {{ic|cron.hourly}} que executa o ''fpupdate'' para a atualização da assinatura do scanner de vírus F-Prot, como exemplo. Outra maneira que pode ser útil, com uma pequena modificação, é diferenciar entre redes usando várias partes da saída do ''nm-tool''; por exemplo, como a rede sem fio ativa é denotada com um asterisco, você pode usar o nome da rede e, em seguida, o grep para um asterisco literal.
=== Conectar a uma rede com segredo na inicialização ===
Por padrão, o NetworkManager não se conectará a redes que exigem um segredo automaticamente na inicialização. Isso ocorre porque ele bloqueia essas conexões para o usuário que faz isso por padrão, conectando-se somente depois de terem efetuado login. Para alterar isso, faça o seguinte:
# Clique com o botão direito do mouse no ícone do {{ic|nm-applet}} em seu painel e selecione Editar conexões e abra a guia Sem fio
# Selecione a conexão com a qual você deseja trabalhar e clique no botão Editar
# Marque as caixas "Conectar automaticamente" e "Disponível para todos os usuários"
# Adicionalmente, certifique-se que em "Segurança Wi-Fi", "Armazenar senha para todos os usuários (não criptografado)" esteja selecionado
Encerre e inicie novamente a sessão para completar.
=== OpenConnect com senha no KWallet ===
Enquanto você pode digitar os dois valores no momento da conexão, o {{Pkg|plasma-nm}} 0.9.3.2-1 e acima são capazes de obter o nome de usuário e a senha do OpenConnect diretamente do [[KWallet]].
Abra o "Gerenciador de carteiras do KDE" e procure a sua conexão OpenConnect VPN em "Gerenciamento de rede | Mapas". Clique em "Mostrar valores" e insira suas credenciais na chave "VpnSecrets" neste formulário (substitua "nome_de_usuário" e "senha"):
form:main:username%SEP%''nome_de_usuário''%SEP%form:main:password%SEP%''senha''
Da próxima vez que você se conectar, o nome de usuário e a senha deverão aparecer na caixa de diálogo "Segredos de VPN".
=== Ignorar dispositivos específicos ===
Às vezes, pode ser desejado que o NetworkManager ignore dispositivos específicos e não tente configurar endereços e rotas para eles. Você pode rapidamente e facilmente ignorar dispositivos por MAC ou por nome de interface usando o seguinte em {{ic|/etc/NetworkManager/conf.d/unmanaged.conf}}:
[keyfile]
unmanaged-devices=mac:00:22:68:1c:59:b1;mac:00:1E:65:30:D1:C4;interface-name:eth0
Após editar o arquivo, execute {{ic|nmcli general reload}} como root. Em seguida, você deve ser capaz de configurar interfaces sem o NetworkManager alterar o que você definiu.
=== Configurando aleatorização de endereço MAC ===
{{Nota|1=Desabilitar a aleatorização de endereço MAC pode ser necessário para obter uma conexão de link (estável) [https://bbs.archlinux.org/viewtopic.php?id=220101] e/ou redes que restrinjam dispositivos com base em seu endereço MAC ou tenham uma rede de limite capacidade.}}
A aleatorização de MAC pode ser usada para aumentar a privacidade, não revelando seu endereço MAC real à rede.
O NetworkManager oferece suporte a dois tipos de aleatorização de endereços MAC: aleatorização durante a digitalização e para conexões de rede. Ambos os modos podem ser configurados modificando o {{ic|/etc/NetworkManager/NetworkManager.conf}} ou criando um arquivo de configuração separado no {{ic|/etc/NetworkManager/conf.d/}}, que é recomendado já que o primeiro arquivo de configuração acima pode ser substituído pelo NetworkManager.
A aleatorização durante a varredura de Wi-Fi é ativada por padrão, mas pode ser desativada adicionando as seguintes linhas ao {{ic|/etc/NetworkManager/NetworkManager.conf}} ou a um arquivo de configuração dedicado em {{ic|/etc/NetworkManager/conf.d}}:
{{hc|/etc/NetworkManager/conf.d/wifi_rand_mac.conf|2=
[device]
wifi.scan-rand-mac-address=no
}}
A aleatorização de MAC para conexões de rede pode ser definida para modos diferentes para interfaces sem fio e Ethernet. Veja a [https://blogs.gnome.org/thaller/2016/08/26/mac-address-spoofing-in-networkmanager-1-4-0/ publicação de blog do GNOME] para mais detalhes sobre os diferentes modos.
Em termos de aleatorização de MAC, os modos mais importantes são {{ic|stable}} e {{ic|random}}. {{ic|stable}} gera um endereço MAC aleatório quando você se conecta a uma nova rede e associa os dois permanentemente. Isso significa que você usará o mesmo endereço MAC sempre que se conectar a essa rede. Em contraste, {{ic|random}} irá gerar um novo endereço MAC toda vez que você se conectar a uma rede, nova ou previamente conhecida. Você pode configurar a aleatorização do MAC adicionando a configuração desejada em {{ic|/etc/NetworkManager/conf.d}}:
{{hc|/etc/NetworkManager/conf.d/wifi_rand_mac.conf|2=
[device-mac-randomization]
# "yes" já é o padrão para fazer varredura
wifi.scan-rand-mac-address=yes
[connection-mac-randomization]
# Aleatoriza o MAC para cada conexão ethernet
ethernet.cloned-mac-address=random
# Gera um MAC aleatório para cada WiFi e associa a dois permanentemente.
wifi.cloned-mac-address=stable
}}
Veja a seguinte [https://blogs.gnome.org/thaller/2016/08/26/mac-address-spoofing-in-networkmanager-1-4-0/ publicação de blog do GNOME] para mais detalhes.
=== Habilitar extensões de privacidade IPv6 ===
Veja [[IPv6 (Português)#NetworkManager]].
=== Trabalhando com conexões cabeadas ===
Por padrão, o NetworkManager gera um perfil de conexão para cada conexão Ethernet com fio que encontrar. No momento em que gera a conexão, ele não sabe se haverá mais adaptadores Ethernet disponíveis. Por isso, ele chama a primeira conexão com fio "Conexão cabeada 1". Você pode evitar gerar essa conexão, configurando {{ic|no-auto-default}} (consulte {{man|5|NetworkManager.conf}}) ou simplesmente excluindo-a. Em seguida, o NetworkManager se lembrará de não gerar uma conexão para essa interface novamente.
Você também pode editar a conexão (e persistir no disco) ou excluí-la. O NetworkManager não irá gerar novamente uma nova conexão. Então, você pode mudar o nome para o que você quiser. Você pode usar algo como o ''nm-connection-editor'' para esta tarefa.
=== Usando iwd como o backend de Wi-Fi ===
Instale {{AUR|networkmanager-iwd}} ou habilite o backend experimental [[iwd (Português)|iwd]] criando o seguinte arquivo de configuração:
{{hc|/etc/NetworkManager/conf.d/wifi_backend.conf|2=
[device]
wifi.backend=iwd
}}
=== Executando em um espaço de nomes de rede ===
Se você deseja executar o NetworkManager dentro de um espaço de nomes de rede (por exemplo, para gerenciar um dispositivo específico que deve ser usado por aplicativos selecionados), abaixe o dispositivo antes de movê-lo para o espaço de nomes:
$ ip link set dev ''MEU_DISPOSITIVO'' down
$ ip link set dev ''MEU_DISPOSITIVO'' netns ''MEU_ESPAÇO_DE_NOMES''
$ ip netns exec ''MEU_ESPAÇO_DE_NOMES'' NetworkManager
...
$ ip netns exec ''MEU_ESPAÇO_DE_NOMES'' killall NetworkManager
caso contrário, o NetworkManager falhará posteriormente ao estabelecer a conexão com um erro {{ic|device is strictly unmanaged}}.
== Solução de problemas ==
=== Nenhum prompt para senha de redes Wi-Fi seguras ===
Ao tentar se conectar a uma rede Wi-Fi protegida, nenhum prompt de senha é exibido e nenhuma conexão é estabelecida. Isso acontece quando nenhum pacote de chaveiro é instalado. Uma solução fácil é instalar o {{Pkg|gnome-keyring}}. Se você quiser que as senhas sejam armazenadas em formato criptografado, siga [[GNOME Keyring]] para configurar o ''gnome-keyring-daemon''.
=== Gerenciamento de rede desabilitado ===
Quando o NetworkManager for desligado, mas o arquivo pid (estado) não for removido, você verá uma mensagem {{ic|Network management disabled}}. Se isso acontecer, remova o arquivo manualmente:
# rm /var/lib/NetworkManager/NetworkManager.state
=== Problemas com cliente DHCP interno ===
Se você tiver problemas para obter um endereço IP usando o cliente DHCP interno, considere usar outro cliente DHCP, consulte [[#Cliente DHCP]] para obter instruções. Essa solução alternativa pode resolver problemas em grandes redes sem fio, como o eduroam.
=== Problemas DHCP com dhclient ===
Se você tiver problemas ao obter um endereço IP via DHCP, tente adicionar o seguinte ao seu {{ic|/etc/dhclient.conf}}:
interface "eth0" {
send dhcp-client-identifier 01:''aa:bb:cc:dd:ee:ff'';
}
sendo {{ic|''aa:bb:cc:dd:ee:ff''}} o endereço MAC desta NIC. O endereço MAC pode ser localizado usando o comando {{ic|ip link show ''interface''}} com o pacote {{Pkg|iproute2}}.
=== Modem 3G não detectado ===
Veja [[USB 3G Modem#NetworkManager]].
=== Desligando WLAN em laptops ===
Às vezes o NetworkManager não funciona quando você desabilita o seu adaptador Wi-Fi com um botão em seu laptop e tenta habilitá-lo novamente depois. Isso geralmente é um problema com ''rfkill''. Para verificar se o driver notifica ''rfkill'' sobre o status do adaptador sem fio, use:
$ watch -n1 rfkill list all
Se um identificador permanecer bloqueado depois de ligar o adaptador, você pode tentar desbloqueá-lo manualmente (onde X é o número do identificador fornecido pela saída acima):
# rfkill event unblock X
=== Reversão de configurações de endereço IP estático para DHCP ===
Devido a um erro não resolvido, ao alterar as conexões padrão para um endereço IP estático, o {{ic|nm-applet}} pode não armazenar adequadamente a alteração de configuração e voltará ao DHCP automático.
Para contornar este problema você tem que editar a conexão padrão (por exemplo, "Auto eth0") em {{ic|nm-applet}}, alterar o nome da conexão (por exemplo "meu eth0"), desmarque a caixa de seleção "Disponível para todos os usuários", altere suas configurações de endereço IP estático conforme desejado e clique em '''Aplicar'''. Isso salvará uma nova conexão com o nome fornecido.
Em seguida, você desejará fazer com que a conexão padrão não seja conectada automaticamente. Para fazer isso, execute {{ic|nm-connection-editor}} ('''não''' como root). No editor de conexão, edite a conexão padrão (por exemplo, "Auto eth0") e desmarque "Conectar automaticamente". Clique em '''Aplicar''' e feche o editor de conexão.
=== Não é possível editar conexões como usuário normal ===
Veja [[#Configurar as permissões de PolicyKit]].
=== Esquecer rede sem fio oculta ===
Como as redes ocultas não são exibidas na lista de seleção da tela de redes sem fio, elas não podem ser esquecidas (removidas) com a GUI. Você pode excluir um com o seguinte comando:
# rm /etc/NetworkManager/system-connections/''SSID''
Isso funciona para qualquer outra conexão.
=== VPN não funciona no GNOME ===
Ao configurar conexões OpenConnect ou vpnc no NetworkManager enquanto estiver usando o GNOME, você algumas vezes nunca verá a caixa de diálogo aparecer e o seguinte erro aparecerá em {{ic|/var/log/errors.log}}:
localhost NetworkManager[399]: [1361719690.10506] [nm-vpn-connection.c:1405] get_secrets_cb(): Failed to request VPN secrets #3: (6) No agents were available for this request.
Isso é causado pelo fato do miniaplicativo de NM do GNOME esperar que os scripts de diálogo estejam em {{ic|/usr/lib/gnome-shell}}, quando os pacotes do NetworkManager os colocam em {{ic|/usr/lib/networkmanager}}.
Como uma correção "temporária" (este bug já existe há algum tempo), faça os seguintes links simbólicos:
* Para OpenConnect: {{ic|ln -s /usr/lib/networkmanager/nm-openconnect-auth-dialog /usr/lib/gnome-shell/}}
* Para VPNC (isto é, Cisco VPN): {{ic|ln -s /usr/lib/networkmanager/nm-vpnc-auth-dialog /usr/lib/gnome-shell/}}
Isso pode precisar ser feito para qualquer outro plug-in de VPN do NM, mas esses são os dois mais comuns.
=== Impossibilidade de se conectar a redes sem fio europeias visíveis ===
Os chips WLAN são fornecidos com um padrão [[Configuração de rede sem fio#Respeitar o domínio regulatório|domínio regulatório]]. Se o seu ponto de acesso não operar dentro dessas limitações, você não conseguirá se conectar à rede. Consertar isso é fácil:
# [[Instale]] {{Pkg|wireless-regdb}}
# Descomente o código de país correto em {{ic|/etc/conf.d/wireless-regdom}}
# Reinicie o sistema, pois a configuração está como somente leitura na inicialização
=== Conexão automática a VPN na inicialização não funciona ===
O problema ocorre quando o sistema (ou seja, o NetworkManager em execução como usuário root) tenta estabelecer uma conexão VPN, mas a senha não está acessível porque está armazenada no GNOME Keyring de um usuário específico.
Uma solução é manter a senha em sua VPN em texto simples, conforme descrito na etapa (2.) de [[#Usar dispatcher para conectar a uma VPN após uma conexão de rede ser estabelecida]].
Você não precisa mais usar o dispatcher descrito na etapa (1.) para se conectar automaticamente, se você usar a nova opção "autoconectar VPN" na interface gráfica do {{ic|nm-applet}}.
=== Gargalo no systemd ===
Com o tempo, os arquivos de log ({{ic|/var/log/journal}}) podem se tornar muito grandes. Isso pode ter um grande impacto no desempenho da inicialização ao usar o NetworkManager, consulte: [[Systemd (Português)#Tempo de inicialização aumentando com o tempo]].
=== Desconexões de rede regulares, latência, pacotes perdidos (WiFi) ===
O NetworkManager faz uma varredura a cada 2 minutos.
Alguns drivers de WiFi apresentam problemas ao procurar estações base enquanto conectados/associados. Os sintomas incluem desconexões/reconexões de VPN e perda de pacotes, páginas da Web que não podem ser carregadas e, em seguida, atualizadas corretamente.
A execução {{ic|journalctl -f}} indicará que isso está ocorrendo, mensagens como as seguintes estarão contidas nos logs em intervalos regulares.
NetworkManager[410]: (wlp3s0): roamed from BSSID 00:14:48:11:20:CF (my-wifi-name) to (none) ((none))
Se o roaming não for importante, o comportamento de varredura periódica poderá ser desabilitado bloqueando o BSSID do ponto de acesso no perfil de conexão WiFi.
=== Impossibilidade de ligar o Wi-Fi com laptop Lenovo (IdeaPad, Legion, etc.) ===
Há um problema com o módulo {{ic|ideapad_laptop}} em alguns modelos da Lenovo, devido ao driver wi-fi relatar incorretamente um bloco virtual. A placa ainda pode ser manipulada com {{ic|netctl}}, mas os gerenciadores como o NetworkManager quebram. Você pode verificar se este é o problema, verificando a saída de {{ic|rfkill list}} depois de alternar sua chave de hardware e ver que o bloco de software persiste.
[[Modprobe (Português)|Descarregar]] o módulo {{ic|ideapad_laptop}} deve corrigir isso. ('''atenção''': isso também pode desabilitar o teclado e o touchpad do laptop!).
=== Desligar envido de hostname ===
O NetworkManager, por padrão, envia o nome do host para o servidor DHCP. O envio de nome de host só pode ser desativado por conexão não globalmente ([https://bugzilla.gnome.org/show_bug.cgi?id=768076 Bug 768076 do GNOME]).
Para desabilitar o envio do seu nome de host para o servidor DHCP para uma conexão específica, adicione o seguinte ao seu arquivo de conexão de rede:
{{hc|/etc/NetworkManager/system-connections/''seu_arquivo_de_conexão''|2=
...
[ipv4]
dhcp-send-hostname=false
...
[ipv6]
dhcp-send-hostname=false
...
}}
=== nm-applet desaparece no i3wm ===
Se você usar o {{ic|xfce4-notifyd.service}} para notificações, deverá [[editar]] a unidade e adicionar o seguinte:
{{hc|/etc/systemd/user/xfce4-notifyd.service.d/display_env.conf|2=
[Service]
Environment="DISPLAY=:0.0"
}}
Depois de recarregar os daemons, [[reinicie]] o {{ic|xfce4-notifyd.service}}. Saia do i3 e reinicie-o novamente, e o miniaplicativo deverá aparecer na área de notificação.
=== Ícones de bandeja do nm-applet exibidos incorretamente ===
Atualmente, os ícones da área de notificação do nm-applet são desenhados uns em cima dos outros, ou seja, o ícone exibindo a força sem fio pode ser exibido na parte superior do ícone, indicando que não há conexão com fio.
Isso aparentemente é um problema/bug do GTK3: https://gitlab.gnome.org/GNOME/gtk/issues/1280 .
Uma versão corrigida do GTK3 existe no AUR, que aparentemente corrige o erro do ícone da área de notificação: {{AUR|gtk3-classic}} .
=== Unit dbus-org.freedesktop.resolve1.service não encontrado ===
Se {{ic|systemd-resolved.service}} não tiver sido iniciado, NetworkManager vai tentar iniciá-lo usando D-Bus e vai falhar:
dbus-daemon[991]: [system] Activating via systemd: service name='org.freedesktop.resolve1' unit='dbus-org.freedesktop.resolve1.service' requested by ':1.23' (uid=0 pid=1012 comm="/usr/bin/NetworkManager --no-daemon ")
dbus-daemon[991]: [system] Activation via systemd failed for unit 'dbus-org.freedesktop.resolve1.service': Unit dbus-org.freedesktop.resolve1.service not found.
dbus-daemon[991]: [system] Activating via systemd: service name='org.freedesktop.resolve1' unit='dbus-org.freedesktop.resolve1.service' requested by ':1.23' (uid=0 pid=1012 comm="/usr/bin/NetworkManager --no-daemon ")
Isso é porque o NetworkManager vai tentar enviar informações DNS para [[systemd-resolved]] independentemente da configuração {{ic|1=main.dns=}} no {{man|5|NetworkManager.conf}}.[https://gitlab.freedesktop.org/NetworkManager/NetworkManager/commit/d4eb4cb45f41b1751cacf71da558bf8f0988f383]
Isso pode ser desabilitado com um arquivo de configuração em {{ic|/etc/NetworkManager/conf.d/}}:
{{hc|/etc/NetworkManager/conf.d/no-systemd-resolved.conf|2=
[main]
systemd-resolved=false
}}
Veja {{Bug|62138}}.
=== Segredos eram necessários, mas não fornecidos ===
Se você tenta se conectar a uma rede usando o dispositivo {{ic|nmcli device wifi connect ''SSID'' password ''senha''}} e recebe o seguinte erro:
Erro: Ativação da conexão falhou: (7) Segredos foram requisitados, mas não fornecidos
O erro pode ser resolvido excluindo o perfil de conexão e criando um novo:
$ nmcli connection delete ''SSID''
$ nmcli device wifi connect ''SSID'' password ''senha''
=== Conexão WPA Empresarial com o NetworkManager ===
Se você tentar se conectar a uma rede WPA Empresarial como 'eduroam' com o NetworkManager com o backend [[iwd (Português)|iwd]], o NetworkManager receberá o seguinte erro:
Connection 'eduroam' is not avialable on device wlan0 because profile is not compatible with device (802.1x connections must have IWD provisioning files)
Isso ocorre porque o NetworkManager não consegue configurar uma rede WPA Enterprise. Portanto, você deve configurá-lo usando um arquivo de configuração do iwd {{ic|/var/lib/iwd/''essid''.8021x}} como descrito em [[iwd (Português)#WPA Empresarial]].
== Veja também ==
* [https://blogs.gnome.org/dcbw/2015/02/16/networkmanager-for-administrators-part-1/ NetworkManager para Administradores Parte 1]
* [[Wikipedia:pt:NetworkManager]]